// var n;
// exports.TipMgr = void 0;
// var $bundleConfig = require("./BundleConfig");
// var $uI_Toast = require("./UI_Toast");
// var $resLoader = require("./ResLoader");
// var $resUtil = require("./ResUtil");
// var l = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t._toast = null;
//         t._isLoadRes = !1;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype.showToast = function (e) {
//         if (e) {
//             this._toast ? this._doToast(e) : this._getToast(e);
//         }
//     };
//     t.prototype._getToast = function (e) {
//         var t = this;
//         if (!this._isLoadRes) {
//             this._isLoadRes = !0;
//             $resLoader.default
//                 .loadRes($bundleConfig.BundleNames.Resouce, "common/UI_Toast", cc.Prefab)
//                 .then(function (o) {
//                     t._toast = $resUtil.ResUtil.instantiate(o);
//                     cc.director.getScene().getChildByName("Canvas").getChildByName("UITips").addChild(t._toast);
//                     t._doToast(e);
//                 });
//         }
//     };
//     t.prototype._doToast = function (e) {
//         this._toast.getComponent($uI_Toast.default).show(e);
//     };
//     return t;
// })(require("./SingletonManager").SingletonMgr);
// exports.TipMgr = l.getInstance();


// import { BundleNames } from './BundleConfig';
// import UI_Toast from './UI_Toast';
// import ResLoader from './ResLoader';
// import { ResUtil } from './ResUtil';
// import { SingletonMgr } from './SingletonManager';

// /**
//  * 提示管理类
//  * 建议类名: TipManager
//  */
// class TipMgr extends SingletonMgr {
//     private _toast: cc.Node | null = null;
//     private _isLoadRes: boolean = false;

//     /**
//      * 显示提示信息
//      * @param message 提示信息内容
//      * 建议方法名: displayToast
//      */
//     public showToast(message: string): void {
//         if (message) {
//             this._toast ? this._doToast(message) : this._getToast(message);
//         }
//     }

//     /**
//      * 获取提示节点
//      * @param message 提示信息内容
//      * 建议方法名: fetchToast
//      */
//     private _getToast(message: string): void {
//         if (!this._isLoadRes) {
//             this._isLoadRes = true;
//             ResLoader.loadRes(BundleNames.Resouce, "common/UI_Toast", cc.Prefab)
//                 .then((prefab: cc.Prefab) => {
//                     this._toast = ResUtil.instantiate(prefab);
//                     cc.director.getScene().getChildByName("Canvas")?.getChildByName("UITips")?.addChild(this._toast);
//                     this._doToast(message);
//                 });
//         }
//     }

//     /**
//      * 执行提示显示
//      * @param message 提示信息内容
//      * 建议方法名: executeToast
//      */
//     private _doToast(message: string): void {
//         this._toast?.getComponent(UI_Toast)?.show(message);
//     }
// }

// export const TipMgrInstance = TipMgr.getInstance();

import { BundleNames } from './BundleConfig';
import ViewToast from './UI_Toast';
import ResLoader from './ResLoader';
import { ResourceUtil } from './ResUtil';
import { SingletonBase } from './SingletonManager';

/**
 * 提示管理类
 * 建议类名: TipManager
 */
class TipManager extends SingletonBase {
    private _toastNode: cc.Node | null = null; // 具体的提示节点
    private _isResourceLoaded: boolean = false; // 资源是否已加载

    /**
     * 显示提示信息
     * @param message 提示信息内容
     * 建议方法名: displayToast
     */
    public showToast(message: string): void {
        if (message) {
            this._toastNode ? this._executeToast(message) : this._fetchToast(message);
        }
    }

    /**
     * 获取提示节点
     * @param message 提示信息内容
     * 建议方法名: fetchToast
     */
    private _fetchToast(message: string): void {
        if (!this._isResourceLoaded) {
            this._isResourceLoaded = true;
            ResLoader.loadRes(BundleNames.Resouce, "common/UI_Toast", cc.Prefab)
                .then((toastPrefab: cc.Prefab) => {
                    this._toastNode = ResourceUtil.instantiate(toastPrefab);
                    cc.director.getScene().getChildByName("Canvas")?.getChildByName("UITips")?.addChild(this._toastNode);
                    this._executeToast(message);
                });
        }
    }

    /**
     * 执行提示显示
     * @param message 提示信息内容
     * 建议方法名: executeToast
     */
    private _executeToast(message: string): void {
        this._toastNode?.getComponent(ViewToast)?.show(message);
    }
}

export const TipMgr = TipManager.getInstance();